#ifndef __PARSER_H__
#define __PARSER_H__

#include "Xml.h"

namespace sf
{
    namespace xml
    {
        class Parser
        {
        public:
            Parser();
            bool load_file(const string &filename);
            bool load_string(const string &str);
            Xml parse();
            ~Parser();

        private:
            void skip_white_space();  // 忽略空白符
            bool parse_declaration(); // 解析xml的声明的部分
            bool parse_commit();      // 解析注释
            Xml parse_element();      // 解析元素（核心）
            string parse_element_name();
            string parse_element_text();
            string parse_element_attr_key();
            string parse_element_attr_val();

        private:
            string m_str;
            int m_idx;
        };

    }
}

#endif